home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / CIncludes / QD3DWinViewer.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  14.9 KB  |  501 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QD3DWinViewer.h
  3.  
  4.      Contains:    Win32 Viewer Controller Interface File.                                
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.4
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DWINVIEWER__
  18. #define __QD3DWINVIEWER__
  19.  
  20. #ifndef __QD3D__
  21. #include <QD3D.h>
  22. #endif
  23. #ifndef __QD3DGROUP__
  24. #include <QD3DGroup.h>
  25. #endif
  26.  
  27.  
  28. #if TARGET_OS_WIN32
  29. #include <windows.h>
  30. #endif
  31.  
  32.  
  33.  
  34. #if PRAGMA_ONCE
  35. #pragma once
  36. #endif
  37.  
  38. #ifdef __cplusplus
  39. extern "C" {
  40. #endif
  41.  
  42. #if PRAGMA_IMPORT
  43. #pragma import on
  44. #endif
  45.  
  46. #if PRAGMA_STRUCT_ALIGN
  47.     #pragma options align=power
  48. #elif PRAGMA_STRUCT_PACKPUSH
  49.     #pragma pack(push, 2)
  50. #elif PRAGMA_STRUCT_PACK
  51.     #pragma pack(2)
  52. #endif
  53.  
  54. #if PRAGMA_ENUM_ALWAYSINT
  55.     #pragma enumsalwaysint on
  56. #elif PRAGMA_ENUM_OPTIONS
  57.     #pragma option enum=int
  58. #elif PRAGMA_ENUM_PACK
  59.     #if __option(pack_enums)
  60.         #define PRAGMA_ENUM_PACK__QD3DWINVIEWER__
  61.     #endif
  62.     #pragma options(!pack_enums)
  63. #endif
  64.  
  65. #if TARGET_OS_WIN32
  66. typedef void *                            TQ3ViewerObject;
  67.  
  68. enum {
  69.     kQ3ViewerShowBadge            = 1 << 0,
  70.     kQ3ViewerActive                = 1 << 1,
  71.     kQ3ViewerControllerVisible    = 1 << 2,
  72.     kQ3ViewerButtonCamera        = 1 << 3,
  73.     kQ3ViewerButtonTruck        = 1 << 4,
  74.     kQ3ViewerButtonOrbit        = 1 << 5,
  75.     kQ3ViewerButtonZoom            = 1 << 6,
  76.     kQ3ViewerButtonDolly        = 1 << 7,
  77.     kQ3ViewerButtonReset        = 1 << 8,
  78.     kQ3ViewerButtonNone            = 1 << 9,
  79.     kQ3ViewerOutputTextMode        = 1 << 10,
  80.     kQ3ViewerDraggingInOff        = 1 << 11,
  81.     kQ3ViewerDefault            = 1 << 15
  82. };
  83.  
  84.  
  85.  
  86. enum {
  87.     kQ3ViewerEmpty                = 0,
  88.     kQ3ViewerHasModel            = 1 << 0,
  89.     kQ3ViewerHasUndo            = 1 << 1
  90. };
  91.  
  92.  
  93. enum TQ3ViewerCameraView {
  94.     kQ3ViewerCameraRestore        = 0,
  95.     kQ3ViewerCameraFit            = 1,
  96.     kQ3ViewerCameraFront        = 2,
  97.     kQ3ViewerCameraBack            = 3,
  98.     kQ3ViewerCameraLeft            = 4,
  99.     kQ3ViewerCameraRight        = 5,
  100.     kQ3ViewerCameraTop            = 6,
  101.     kQ3ViewerCameraBottom        = 7
  102. };
  103. typedef enum TQ3ViewerCameraView TQ3ViewerCameraView;
  104.  
  105.  
  106. /******************************************************************************
  107.  **                                                                             **
  108.  **                                WM_NOTIFY structures                           **
  109.  **                                                                             **
  110.  *****************************************************************************/
  111.  
  112. struct TQ3ViewerDropFiles {
  113.     NMHDR                             nmhdr;
  114.     HANDLE                             hDrop;
  115. };
  116. typedef struct TQ3ViewerDropFiles        TQ3ViewerDropFiles;
  117.  
  118. struct TQ3ViewerSetView {
  119.     NMHDR                             nmhdr;
  120.     TQ3ViewerCameraView             view;
  121. };
  122. typedef struct TQ3ViewerSetView            TQ3ViewerSetView;
  123.  
  124. struct TQ3ViewerSetViewNumber {
  125.     NMHDR                             nmhdr;
  126.     unsigned long                     number;
  127. };
  128. typedef struct TQ3ViewerSetViewNumber    TQ3ViewerSetViewNumber;
  129.  
  130. struct TQ3ViewerButtonSet {
  131.     NMHDR                             nmhdr;
  132.     unsigned long                     button;
  133. };
  134. typedef struct TQ3ViewerButtonSet        TQ3ViewerButtonSet;
  135. /******************************************************************************
  136.  **                                                                             **
  137.  **                                WM_NOTIFY defines                               **
  138.  **                                                                             **
  139.  *****************************************************************************/
  140.  
  141. #define Q3VNM_DROPFILES        0x5000
  142. #define Q3VNM_CANUNDO        0x5001
  143. #define Q3VNM_DRAWCOMPLETE    0x5002
  144. #define Q3VNM_SETVIEW        0x5003
  145. #define Q3VNM_SETVIEWNUMBER    0x5004
  146. #define Q3VNM_BUTTONSET        0x5005
  147. #define Q3VNM_BADGEHIT        0x5006
  148.  
  149. /******************************************************************************
  150.  **                                                                             **
  151.  **                            Win32 Window Class Name                           **
  152.  **        Can be passed as a parameter to CreateWindow or CreateWindowEx       **
  153.  **                                                                             **
  154.  *****************************************************************************/
  155. #define kQ3ViewerClassName "QD3DViewerWindow"
  156.  
  157. /******************************************************************************
  158.  **                                                                             **
  159.  **                            Win32 Clipboard type                              **
  160.  **                                                                             **
  161.  *****************************************************************************/
  162. #define kQ3ViewerClipboardFormat "QuickDraw 3D Metafile"
  163. /******************************************************************************
  164.  **                                                                             **
  165.  **        Return viewer version number                                         **
  166.  **                                                                             **
  167.  *****************************************************************************/
  168. EXTERN_API_C( TQ3Status )
  169. Q3WinViewerGetVersion            (unsigned long *        majorRevision,
  170.                                  unsigned long *        minorRevision);
  171.  
  172.  
  173. /******************************************************************************
  174.  **                                                                             **
  175.  **        Return viewer release version number                                 **
  176.  **        (in 'vers' format - e.g. 0x01518000 ==> 1.5.1 release)                 **
  177.  **                                                                             **
  178.  *****************************************************************************/
  179. EXTERN_API_C( TQ3Status )
  180. Q3WinViewerGetReleaseVersion    (unsigned long *        releaseRevision);
  181.  
  182.  
  183. /******************************************************************************
  184.  **                                                                             **
  185.  **                        Creation and destruction                             **
  186.  **                Note that this is not a QuickDraw 3D object                     **
  187.  **                                                                             **
  188.  *****************************************************************************/
  189. EXTERN_API_C( TQ3ViewerObject )
  190. Q3WinViewerNew                    (HWND                     window,
  191.                                  const RECT *            rect,
  192.                                  unsigned long             flags);
  193.  
  194. EXTERN_API_C( TQ3Status )
  195. Q3WinViewerDispose                (TQ3ViewerObject         viewer);
  196.  
  197.  
  198. /******************************************************************************
  199.  **                                                                             **
  200.  **                    Functions to attach data to a WinViewer                     **
  201.  **                                                                             **
  202.  *****************************************************************************/
  203. EXTERN_API_C( TQ3Status )
  204. Q3WinViewerUseFile                (TQ3ViewerObject         viewer,
  205.                                  HANDLE                 fileHandle);
  206.  
  207. EXTERN_API_C( TQ3Status )
  208. Q3WinViewerUseData                (TQ3ViewerObject         viewer,
  209.                                  void *                    data,
  210.                                  unsigned long             size);
  211.  
  212.  
  213. /******************************************************************************
  214.  **                                                                             **
  215.  **                Functions to write data out from the WinViewer                 **
  216.  **                                                                             **
  217.  *****************************************************************************/
  218. EXTERN_API_C( TQ3Status )
  219. Q3WinViewerWriteFile            (TQ3ViewerObject         viewer,
  220.                                  HANDLE                 fileHandle);
  221.  
  222. EXTERN_API_C( TQ3Status )
  223. Q3WinViewerWriteData            (TQ3ViewerObject         viewer,
  224.                                  void *                    data,
  225.                                  unsigned long             dataSize,
  226.                                  unsigned long *        actualDataSize);
  227.  
  228.  
  229. /******************************************************************************
  230.  **                                                                             **
  231.  **        Use this function to force the WinViewer to re-draw                     **
  232.  **                                                                             **
  233.  *****************************************************************************/
  234. EXTERN_API_C( TQ3Status )
  235. Q3WinViewerDraw                    (TQ3ViewerObject         viewer);
  236.  
  237. EXTERN_API_C( TQ3Status )
  238. Q3WinViewerDrawContent            (TQ3ViewerObject         viewer);
  239.  
  240. EXTERN_API_C( TQ3Status )
  241. Q3WinViewerDrawControlStrip        (TQ3ViewerObject         viewer);
  242.  
  243.  
  244. /******************************************************************************
  245.  **                                                                             **
  246.  **        Function used by the WinViewer to filter and handle events             **
  247.  **                                                                             **
  248.  *****************************************************************************/
  249. EXTERN_API_C( BOOL )
  250. Q3WinViewerMouseDown            (TQ3ViewerObject         viewer,
  251.                                  long                     x,
  252.                                  long                     y);
  253.  
  254. EXTERN_API_C( BOOL )
  255. Q3WinViewerContinueTracking        (TQ3ViewerObject         viewer,
  256.                                  long                     x,
  257.                                  long                     y);
  258.  
  259. EXTERN_API_C( BOOL )
  260. Q3WinViewerMouseUp                (TQ3ViewerObject         viewer,
  261.                                  long                     x,
  262.                                  long                     y);
  263.  
  264.  
  265. /******************************************************************************
  266.  **                                                                             **
  267.  **        This function returns a Bitmap of the contents of the                  **
  268.  **        WinViewer's window.  The application should dispose the Bitmap.         **
  269.  **                                                                             **
  270.  *****************************************************************************/
  271. EXTERN_API_C( HBITMAP )
  272. Q3WinViewerGetBitmap            (TQ3ViewerObject         viewer);
  273.  
  274.  
  275. /******************************************************************************
  276.  **                                                                             **
  277.  **                    Calls for dealing with Buttons                             **
  278.  **                                                                             **
  279.  *****************************************************************************/
  280. EXTERN_API_C( TQ3Status )
  281. Q3WinViewerGetButtonRect        (TQ3ViewerObject         viewer,
  282.                                  unsigned long             button,
  283.                                  RECT *                    rectangle);
  284.  
  285. EXTERN_API_C( unsigned long )
  286. Q3WinViewerGetCurrentButton        (TQ3ViewerObject         viewer);
  287.  
  288. EXTERN_API_C( TQ3Status )
  289. Q3WinViewerSetCurrentButton        (TQ3ViewerObject         viewer,
  290.                                  unsigned long             button);
  291.  
  292.  
  293. /******************************************************************************
  294.  **                                                                             **
  295.  **        Functions to set/get the group to be displayed by the WinViewer.     **
  296.  **                                                                             **
  297.  *****************************************************************************/
  298. EXTERN_API_C( TQ3Status )
  299. Q3WinViewerUseGroup                (TQ3ViewerObject         viewer,
  300.                                  TQ3GroupObject         group);
  301.  
  302. EXTERN_API_C( TQ3GroupObject )
  303. Q3WinViewerGetGroup                (TQ3ViewerObject         viewer);
  304.  
  305.  
  306. /******************************************************************************
  307.  **                                                                             **
  308.  **        Functions to set/get the color used to clear the window                 **
  309.  **                                                                             **
  310.  *****************************************************************************/
  311. EXTERN_API_C( TQ3Status )
  312. Q3WinViewerSetBackgroundColor    (TQ3ViewerObject         viewer,
  313.                                  TQ3ColorARGB *            color);
  314.  
  315. EXTERN_API_C( TQ3Status )
  316. Q3WinViewerGetBackgroundColor    (TQ3ViewerObject         viewer,
  317.                                  TQ3ColorARGB *            color);
  318.  
  319.  
  320. /******************************************************************************
  321.  **                                                                             **
  322.  **        Getting/Setting a WinViewer's View object.  Disposal is needed.         **
  323.  **                                                                             **
  324.  *****************************************************************************/
  325. EXTERN_API_C( TQ3ViewObject )
  326. Q3WinViewerGetView                (TQ3ViewerObject         viewer);
  327.  
  328. EXTERN_API_C( TQ3Status )
  329. Q3WinViewerRestoreView            (TQ3ViewerObject         viewer);
  330.  
  331.  
  332. /******************************************************************************
  333.  **                                                                             **
  334.  **        Calls for setting/getting WinViewer flags                             **
  335.  **                                                                             **
  336.  *****************************************************************************/
  337. EXTERN_API_C( TQ3Status )
  338. Q3WinViewerSetFlags                (TQ3ViewerObject         viewer,
  339.                                  unsigned long             flags);
  340.  
  341. EXTERN_API_C( unsigned long )
  342. Q3WinViewerGetFlags                (TQ3ViewerObject         viewer);
  343.  
  344.  
  345. /******************************************************************************
  346.  **                                                                             **
  347.  **        Calls related to bounds/dimensions.  Bounds is the size of              **
  348.  **        the window.  Dimensions can either be the Rect from the ViewHints     **
  349.  **        or the current dimensions of the window (if you do a Set).             **
  350.  **                                                                             **
  351.  *****************************************************************************/
  352. EXTERN_API_C( TQ3Status )
  353. Q3WinViewerSetBounds            (TQ3ViewerObject         viewer,
  354.                                  RECT *                    bounds);
  355.  
  356. EXTERN_API_C( TQ3Status )
  357. Q3WinViewerGetBounds            (TQ3ViewerObject         viewer,
  358.                                  RECT *                    bounds);
  359.  
  360. EXTERN_API_C( TQ3Status )
  361. Q3WinViewerSetDimension            (TQ3ViewerObject         viewer,
  362.                                  unsigned long             width,
  363.                                  unsigned long             height);
  364.  
  365. EXTERN_API_C( TQ3Status )
  366. Q3WinViewerGetDimension            (TQ3ViewerObject         viewer,
  367.                                  unsigned long *        width,
  368.                                  unsigned long *        height);
  369.  
  370. EXTERN_API_C( TQ3Status )
  371. Q3WinViewerGetMinimumDimension    (TQ3ViewerObject         viewer,
  372.                                  unsigned long *        width,
  373.                                  unsigned long *        height);
  374.  
  375.  
  376. /******************************************************************************
  377.  **                                                                             **
  378.  **                            Window related calls                             **
  379.  **                                                                             **
  380.  *****************************************************************************/
  381. EXTERN_API_C( TQ3Status )
  382. Q3WinViewerSetWindow            (TQ3ViewerObject         viewer,
  383.                                  HWND                     window);
  384.  
  385. EXTERN_API_C( HWND )
  386. Q3WinViewerGetWindow            (TQ3ViewerObject         viewer);
  387.  
  388. EXTERN_API_C( TQ3ViewerObject )
  389. Q3WinViewerGetViewer            (HWND                     theWindow);
  390.  
  391. EXTERN_API_C( HWND )
  392. Q3WinViewerGetControlStrip        (TQ3ViewerObject         viewer);
  393.  
  394.  
  395. /******************************************************************************
  396.  **                                                                             **
  397.  **        Adjust Cursor provided for compatibility with Mac Viewer             **
  398.  **                                                                             **
  399.  *****************************************************************************/
  400. EXTERN_API_C( TQ3Boolean )
  401. Q3WinViewerAdjustCursor            (TQ3ViewerObject         viewer,
  402.                                  long                     x,
  403.                                  long                     y);
  404.  
  405. EXTERN_API_C( TQ3Status )
  406. Q3WinViewerCursorChanged        (TQ3ViewerObject         viewer);
  407.  
  408.  
  409. /******************************************************************************
  410.  **                                                                             **
  411.  **        Returns the state of the WinViewer.  See the constant defined at the **
  412.  **        top of this file.                                                     **
  413.  **                                                                             **
  414.  *****************************************************************************/
  415. EXTERN_API_C( unsigned long )
  416. Q3WinViewerGetState                (TQ3ViewerObject         viewer);
  417.  
  418.  
  419. /******************************************************************************
  420.  **                                                                             **
  421.  **                            Clipboard utilities                                 **
  422.  **                                                                             **
  423.  *****************************************************************************/
  424. EXTERN_API_C( TQ3Status )
  425. Q3WinViewerClear                (TQ3ViewerObject         viewer);
  426.  
  427. EXTERN_API_C( TQ3Status )
  428. Q3WinViewerCut                    (TQ3ViewerObject         viewer);
  429.  
  430. EXTERN_API_C( TQ3Status )
  431. Q3WinViewerCopy                    (TQ3ViewerObject         viewer);
  432.  
  433. EXTERN_API_C( TQ3Status )
  434. Q3WinViewerPaste                (TQ3ViewerObject         viewer);
  435.  
  436.  
  437. /******************************************************************************
  438.  **                                                                             **
  439.  **                                Undo                                          **
  440.  **                                                                             **
  441.  *****************************************************************************/
  442. EXTERN_API_C( TQ3Status )
  443. Q3WinViewerUndo                    (TQ3ViewerObject         viewer);
  444.  
  445. EXTERN_API_C( TQ3Boolean )
  446. Q3WinViewerGetUndoString        (TQ3ViewerObject         viewer,
  447.                                  char *                    theString,
  448.                                  unsigned long             stringSize,
  449.                                  unsigned long *        actualSize);
  450.  
  451.  
  452. /******************************************************************************
  453.  **                                                                             **
  454.  **                            New Camera Stuff                                 **
  455.  **                                                                             **
  456.  *****************************************************************************/
  457. EXTERN_API_C( TQ3Status )
  458. Q3WinViewerGetCameraCount        (TQ3ViewerObject         viewer,
  459.                                  unsigned long *        count);
  460.  
  461. EXTERN_API_C( TQ3Status )
  462. Q3WinViewerSetCameraNumber        (TQ3ViewerObject         viewer,
  463.                                  unsigned long             cameraNo);
  464.  
  465. EXTERN_API_C( TQ3Status )
  466. Q3WinViewerSetCameraView        (TQ3ViewerObject         viewer,
  467.                                  TQ3ViewerCameraView     viewType);
  468.  
  469. #endif  /* TARGET_OS_WIN32 */
  470.  
  471.  
  472.  
  473. #if PRAGMA_ENUM_ALWAYSINT
  474.     #pragma enumsalwaysint reset
  475. #elif PRAGMA_ENUM_OPTIONS
  476.     #pragma option enum=reset
  477. #elif defined(PRAGMA_ENUM_PACK__QD3DWINVIEWER__)
  478.     #pragma options(pack_enums)
  479. #endif
  480.  
  481. #if PRAGMA_STRUCT_ALIGN
  482.     #pragma options align=reset
  483. #elif PRAGMA_STRUCT_PACKPUSH
  484.     #pragma pack(pop)
  485. #elif PRAGMA_STRUCT_PACK
  486.     #pragma pack()
  487. #endif
  488.  
  489. #ifdef PRAGMA_IMPORT_OFF
  490. #pragma import off
  491. #elif PRAGMA_IMPORT
  492. #pragma import reset
  493. #endif
  494.  
  495. #ifdef __cplusplus
  496. }
  497. #endif
  498.  
  499. #endif /* __QD3DWINVIEWER__ */
  500.  
  501.